﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CLab.Base;
using System.Collections;
using System.Data;
using CLab.Common.Objects;
using CLab.Common.Constantes;

namespace CLab.PagAdminLab
{
    public partial class CatProcedenciaRegistro : PageBase
    {
        #region Eventos

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    PreparaPagina();
                    if (ViewParametros.Count > 0)
                    {
                        object idProcedencia = ViewParametros.Find(delegate(Parametro p) { return p.Nombre == "IdProcedencia"; }).Valor;
                        ObtenInfo(idProcedencia);
                    }
                }
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SetFocus(txtDescripcion.ControlTextBox.ClientID);
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                ProcedenciaServiceReference.ProcedenciaServiceClient servicio = new ProcedenciaServiceReference.ProcedenciaServiceClient();
                ProcedenciaServiceReference.Procedencia pro = new ProcedenciaServiceReference.Procedencia();
                pro.IdLaboratorio = SessionLaboratorio.IdLaboratorio;
                pro.Descripcion = txtDescripcion.Text;
                pro.IpMod = Request.UserHostAddress;
                pro.IdUsuarioMod = SessionUsuario.IdUsuario;
                pro.IdProcedencia = CLab.Common.Util.Convert.ToNInt(hdnIdProcedencia.Value);
                hdnIdProcedencia.Value = servicio.RegistraProcedencia(pro).ToString();
                Master.alertExito();
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Nuevo();
        }

        #endregion

        #region Métodos

        private void PreparaPagina()
        {
            txtDescripcion.EnabledValidator = true;
            Master.TituloPagina = "Registrar procedencia";
        }

        private void Nuevo()
        {
            txtDescripcion.Text = "";
            hdnIdProcedencia.Value = "";
            SetFocus(txtDescripcion.ControlTextBox.ClientID);
        }

        private void ObtenInfo(object idProcedencia)
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta("@psDescripcion", null, ConsultaServiceReference.Parameter.vEnumType.VarChar));
            parametros.Add(CreaParametroConsulta("@pnIdProcedencia", CLab.Common.Util.Convert.ToNInt(idProcedencia), ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdLaboratorio", CLab.Common.Util.Convert.ToNInt(SessionLaboratorio.IdLaboratorio), ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdSucursal", CLab.Common.Util.Convert.ToNInt(SessionLaboratorio.IdSucursal), ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] prms = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(prms);
            //Ejecuta conulta
            DataSet ds = servicio.EjecutaConsultaConParametros("spObtenProcedencia", prms);
            txtDescripcion.Text = ds.Tables[0].Rows[0][Columnas.Nombre].ToString();
            hdnIdProcedencia.Value = idProcedencia.ToString();
        }

        #endregion
    }
}